{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Simplifying block diagrams\n", "============\n", "\n", "[These notes](http://faculty.mu.edu.sa/public/uploads/1415021770.8406Block_Diagram_Reduction_Rules.pdf) detail some techniques for reducing block diagrams graphically. In this notebook, I will solve the problem using SymPy.\n", "\n", "Let's reduce this big block diagram to one input-output relationship (Example 4 in the notes linked to above):\n", "\n", "![](../../assets/bigblockdiagram.png)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sympy\n", "sympy.init_printing()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "(R, V1, V2, V3, V4, V5, V6, V7, V8, C,\n", " G1, G2, G3, H1, H2, H3) = sympy.symbols('R, V1, V2, V3, V4, V5, V6, V7, V8, C,'\n", " 'G1, G2, G3, H1, H2, H3')\n", "unknowns = V1, V2, V3, V4, V5, V6, V7, V8, C" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "eqs = [# Blocks\n", " V2 - G1*V1,\n", " V4 - G2*V3,\n", " C - G3*V5,\n", " V6 - H1*V4,\n", " V7 - H2*V4,\n", " V8 - H3*C,\n", " # Sums\n", " V1 - (R - V6),\n", " V3 - (V2 - V7),\n", " V5 - (V4 + V3 - V8),\n", " ]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left \\{ C : \\frac{G_{1} G_{3} R \\left(G_{2} + 1\\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}, \\quad V_{1} : \\frac{R \\left(G_{2} H_{2} + 1\\right)}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{2} : \\frac{G_{1} R \\left(G_{2} H_{2} + 1\\right)}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{3} : \\frac{G_{1} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{4} : \\frac{G_{1} G_{2} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{5} : \\frac{G_{1} R \\left(G_{2} + 1\\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}, \\quad V_{6} : \\frac{G_{1} G_{2} H_{1} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{7} : \\frac{G_{1} G_{2} H_{2} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \\quad V_{8} : \\frac{G_{1} G_{3} H_{3} R \\left(G_{2} + 1\\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}\\right \\}$$" ], "text/plain": [ "⎧ G₁⋅G₃⋅R⋅(G₂ + 1) R⋅(G₂⋅\n", "⎨C: ───────────────────────────────────────────────────────────, V₁: ─────────\n", "⎩ G₁⋅G₂⋅G₃⋅H₁⋅H₃ + G₁⋅G₂⋅H₁ + G₂⋅G₃⋅H₂⋅H₃ + G₂⋅H₂ + G₃⋅H₃ + 1 G₁⋅G₂⋅H₁ \n", "\n", "H₂ + 1) G₁⋅R⋅(G₂⋅H₂ + 1) G₁⋅R G₁⋅\n", "───────────, V₂: ────────────────────, V₃: ────────────────────, V₄: ─────────\n", "+ G₂⋅H₂ + 1 G₁⋅G₂⋅H₁ + G₂⋅H₂ + 1 G₁⋅G₂⋅H₁ + G₂⋅H₂ + 1 G₁⋅G₂⋅H₁ \n", "\n", "G₂⋅R G₁⋅R⋅(G₂ + 1) \n", "───────────, V₅: ───────────────────────────────────────────────────────────, \n", "+ G₂⋅H₂ + 1 G₁⋅G₂⋅G₃⋅H₁⋅H₃ + G₁⋅G₂⋅H₁ + G₂⋅G₃⋅H₂⋅H₃ + G₂⋅H₂ + G₃⋅H₃ + 1 \n", "\n", " G₁⋅G₂⋅H₁⋅R G₁⋅G₂⋅H₂⋅R G₁\n", "V₆: ────────────────────, V₇: ────────────────────, V₈: ──────────────────────\n", " G₁⋅G₂⋅H₁ + G₂⋅H₂ + 1 G₁⋅G₂⋅H₁ + G₂⋅H₂ + 1 G₁⋅G₂⋅G₃⋅H₁⋅H₃ + G₁⋅G₂\n", "\n", "⋅G₃⋅H₃⋅R⋅(G₂ + 1) ⎫\n", "─────────────────────────────────────⎬\n", "⋅H₁ + G₂⋅G₃⋅H₂⋅H₃ + G₂⋅H₂ + G₃⋅H₃ + 1⎭" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = sympy.solve(eqs, unknowns)\n", "sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The solution in the notes is factored:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\frac{G_{1} G_{3} R \\left(G_{2} + 1\\right)}{\\left(G_{3} H_{3} + 1\\right) \\left(G_{1} G_{2} H_{1} + G_{2} H_{2} + 1\\right)}$$" ], "text/plain": [ " G₁⋅G₃⋅R⋅(G₂ + 1) \n", "──────────────────────────────────\n", "(G₃⋅H₃ + 1)⋅(G₁⋅G₂⋅H₁ + G₂⋅H₂ + 1)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol[C].factor()" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }